#pragma once
#include <vector>
#include <string>
#include <boost/shared_ptr.hpp>

namespace quic
{
	class RiskMeasure
	{
	public:
		typedef std::vector<boost::shared_ptr<RiskMeasure> > Children;
		RiskMeasure(std::string pName, bool pStored, std::string pModule);
		~RiskMeasure(void);
		std::vector<RiskMeasure *> parents;
		Children children;
		inline void addChild(boost::shared_ptr<RiskMeasure> child) {
			child->parents.push_back(this);
			this->children.push_back(child);
		};

		std::vector<std::string> parameters;
		inline std::string getName() const {return name;}
		inline bool isStored() const {return stored;}	
		inline std::string getModule() const {return module;}


	private:
		std::string name;
		bool stored;		
		std::string module;
	};
};